package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Page;
import org.jsola.core.Result;
import org.jsola.hr.dto.EmpCardRequireAddDTO;
import org.jsola.hr.dto.EmpCardRequireUpdateDTO;
import org.jsola.hr.query.EmpCardRequireQuery;
import org.jsola.hr.vo.EmpCardRequireListVO;
import org.jsola.hr.vo.EmpCardRequireVO;

import java.util.List;

/**
 * @author zhr
 */
@Api(tags = "hr-公司员工证件信息所需信息")
public interface IEmpCardRequireControllerAPI {

    /**
     * 新增公司员工证件信息所需信息
     * @param empCardRequireAddDTO 公司员工证件信息所需信息新增实体
     * @return 公司员工证件信息所需信息展示对象
     */
    @ApiOperation(value = "新增公司员工证件信息所需信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empCardRequireAddDTO", dataType = "EmpCardRequireAddDTO", value = "新增公司员工证件信息所需信息", paramType = "body")
    })
    Result<EmpCardRequireVO> save(EmpCardRequireAddDTO empCardRequireAddDTO);


    /**
     * 修改公司员工证件信息所需信息
     * @param empCardRequireUpdateDTO 公司员工证件信息所需信息
     * @return 更新数量
     */
    @ApiOperation(value = "修改公司员工证件信息所需信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empCardRequireUpdateDTO", dataType = "EmpCardRequireUpdateDTO", value = "修改公司员工证件信息所需信息", paramType = "body")
    })
    Result<Integer> update(EmpCardRequireUpdateDTO empCardRequireUpdateDTO);




    /**
     * 删除单个公司员工证件信息所需信息，彻底删除
     * @param empCardRequireId 公司员工证件信息所需信息id
     * @return 删除数量
     */
    @ApiOperation(value="删除单个公司员工证件信息所需信息，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empCardRequireId", dataType = "String", value = "公司员工证件信息所需信息id", paramType = "path")
    })
    Result<Integer> delete(String empCardRequireId);


    /**
     * 批量删除公司员工证件信息所需信息，彻底删除
     * @param empCardRequireIds 公司员工证件信息所需信息id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除公司员工证件信息所需信息，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empCardRequireIds", dataType = "String[]", value = "公司员工证件信息所需信息id数组", paramType = "body" ,allowMultiple = true)
    })
    Result<Integer> deleteBatch(String[] empCardRequireIds);


    /**
     * 根据公司员工证件信息所需信息id查询公司员工证件信息所需信息详情
     * @param empCardRequireId 公司员工证件信息所需信息id
     * @return 公司员工证件信息所需信息详情
     */
    @ApiOperation(value="根据公司员工证件信息所需信息id查询公司员工证件信息所需信息详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empCardRequireId", dataType = "String", value = "公司员工证件信息所需信息id", paramType = "path")
    })
    Result<EmpCardRequireVO> findById(String empCardRequireId);


    /**
     * 查询公司员工证件信息所需信息
     * @param empCardRequireQuery 公司员工证件信息所需信息查询参数
     * @return page
     */
    @ApiOperation(value="查询公司员工证件信息所需信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empCardRequireQuery", dataType = "EmpCardRequireQuery", value = "公司员工证件信息所需信息查询参数", paramType = "query")
    })
    Result<List<EmpCardRequireListVO>> listAll(EmpCardRequireQuery empCardRequireQuery);


     /**
     * 分页查询公司员工证件信息所需信息
     * @param empCardRequireQuery 公司员工证件信息所需信息查询参数
     * @return page
     */
    @ApiOperation(value="分页查询公司员工证件信息所需信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empCardRequireQuery", dataType = "EmpCardRequireQuery", value = "公司员工证件信息所需信息查询参数", paramType = "query")
    })
    Result<Page<EmpCardRequireListVO>> page(EmpCardRequireQuery empCardRequireQuery);


}

